Subscribe to api Design
1.Expound
After setting the parameters of the current IPC through the WEB, the backend NVR/APP still displays unmodified parameters. In order to achieve real-time updates of backend parameters, subscription APIs are adopted. Subscription API, the backend will inform the frontend of the API used for pages that require real-time parameter updates. If the frontend sets a parameter that matches the subscription content page, it will inform the backend to obtain the parameter for that page.
2.Subscription Content (Scalable)
Table 1
Module | API Interface | Interface Description | Remarks |
---|---|---|---|
record | StreamConfig/MainStream/Range(Get) | Main stream page parameter acquisition | |
record | StreamConfig/SubStream/Range(Get) | sub stream page parameter acquisition | |
record | StreamConfig/MobileStream/Range(Get) | Mobiles stream page parameter acquisition | |
record | StreamConfig/EventStream/Range(Get) | Event stream page parameter acquisition | |
record | DeviceConfig/Audio/Range(Get) | Audio page parameter acquisition | |
... | .. |
3.Interaction
{width="5.768055555555556in" height="5.174305555555556in"}
When IPC goes online to NVR, NVR calls Login/DeviceInfo/Get, and IPC responds with all subscription APIs currently supported by IPC. The NVR calls Login/SubscribeApi/Set, and its request body is accompanied by the required subscription API or all subscription strings. If the IPC responds OK, it indicates successful subscription. If IPC parameter settings occur, subscribed APIs will be pushed to the backend from/API/Event/Check, and the backend will request the API to obtain parameter data.
4.Protocol formulation
1. Login/DeviceInfo/Get
Response message
Table 2
Parameter | Range | Type | Description |
---|---|---|---|
support_subscribe_api | "AlarmConfig/Deterrence/Range" "AlarmConfig/Deterrence/Get" "StreamConfig/MainStream/Range" "StreamConfig/MainStream/Get" "StreamConfig/SubStream/Range" "StreamConfig/SubStream/Get" "StreamConfig/MobileStream/Range" "StreamConfig/MobileStream/Get" "DeviceConfig/Audio/Range" "DeviceConfig/Audio/Get" | string array | Currently supported API for subscription |
device_main_menu | "localSetting" "remoteSetting" "playback" "preview" | string array | Control the ability set displayed on the upper right side of the preview |
encode_type_ability | "H.264" "H.265" "H.264+" "H.265+" | string array | Supported encoding types |
concentrate_linkage_schedule_ability | "FloodLight" | string array | Centralized linkage scheduling capability |
ptz_ability | Json Object | Parameters can be found in Table 3 | |
support_ai_pidlcd | Json Object | Does it support the perimeter and trip lines of AI | |
support_face_config | bool | Face search in the playback interface Playback - AI - Face Detection | |
support_repeat_visitor | bool | Does it support the function of returning customers | |
support_face_attendance | bool | Whether to support the face attendance function | |
support_human_vehicle_search | bool | Whether the pedestrian and vehicle search function is supported | |
support_PidLcd_search | bool | Whether the Pid Lcd search function is supported | |
support_heat_map | bool | Whether the heat map function is supported | |
support_license_plate | bool | Whether the license plate recognition function is supported | |
support_lpd_enhance | bool | Whether the enhanced license plate detection function is supported | |
support_Intrusion_search | bool | Whether the intrusion detection function is supported | |
support_RegionEntrance_search | bool | Whether to support the area entry search function | |
support_RegionExiting_search | bool | Whether the enhanced license plate detection function is supported | |
device_preview_AI_item | "FR" "Human" "Vehicle" "Non-Vehicle" "PID_Human" "PID_Vehicle" "PID_Non-Vehicle" "LCD_Human" "LCD_Vehicle" "LCD_Non-Vehicle" "LPR" "Intrusion_Human" "Intrusion_Vehicle" "Intrusion_Non-Vehicle" "RegionEntrance_Human" "RegionEntrance_Vehicle" "RegionEntrance_Non-Vehicle" "RegionExiting_Human" "RegionExiting_Vehicle" "RegionExiting_Non-Vehicle" | string array | After the new version, this field value is used for sidebar push chart, playback intelligent search, database statistics interface type display judgment |
support_occlusion_detection | bool | Whether the occlusion detection function is supported | |
device_preview_ability | "face" "manual_alarm" | string array | Control the capability set displayed on the preview side |
dev_play_backcap | int | 0: old playback mode, 1: fast forward fast rewind only I-frame mode, 2: fast forward fast rewind I-frame mode | |
dev_type | unsigned long long | Device type | |
device_type | maxlength:32byte | string | Equipment model |
sound | bool | Preview whether the page displays the horn switch | |
live_sound_disable | Json Object | Whether to make preview sound parameters see Table 4 | |
check_ftp_upgrade | bool | Check whether the FTP upgrade is required | |
support_screen_shots | bool | Whether to support screenshots | |
channel_num | int | Number of channels | |
stream_profile | Json Object | Support for several stream switching parameters see Table 5 | |
default_stream | “Mainstream” “Substream” | string | IE Default stream type |
support_ftp_upgrade | bool | Whether to support ftp upgrade | |
support_http_upgrade | bool | Whether to support http upgrade | |
support_get_upgradeUrlpw | bool | Whether to obtain the ftp upgrade URL password | |
backup_video_encryption_pwd | 6-32 | bool | Backup video encryption |
support_backup_video_encryption | bool | Whether video backup is supported | |
push_type | "TutkPush" "VVPush" “RSPush”"Baidu" | string | Push type |
pushinfo_type | “Motion”“Io” “Videoloss””Pir” | string array | |
local_alarmin_num | int | Board end alarm input | |
local_alarmout_num | int | Board end alarm output | |
support_ie_down_snap | bool | Whether to support Internet Explorer download board capture | |
preview_num | int | Number of previewing channels for the main stream | |
mac_addr | string | mac address | |
p2p_id | bool | P2P ID | |
manufacturer | maxlength:35byte | string | Device type |
support_smart | bool | Support intelligence | |
support_smart_record | bool | Whether intelligent video recording is supported | |
support_substream_playback | bool | Whether substream playback is supported | |
support_pir_record | bool | Whether to support pir recording | |
support_flood_light | bool | Whether white light is supported | |
support_record_tag | bool | Whether video labels are supported | |
support_aac | bool | Whether AAC audio format is supported | |
support_hls_server | bool | Whether single-channel HLS streams are supported | |
support_voice_prompts | bool | Whether voice prompt is supported | |
support_speaker | bool | Whether to support intercom | |
talkback | “TalkHalf”,“TalkFull” | string | Intercom working mode |
support_audio_volume | bool | Whether to support volume adjustment | |
support_sound_record | bool | sound alarm Display flag bits: 0 hidden and 1 displayed | |
support_manual_record | bool | Whether to support manual video search | |
support_video_cover_record | bool | Whether to display the video occlusion alarm video | |
support_more_chn_playback | bool | Whether multiple playback is supported on the Internet Explorer playback page | |
support_ai_notification_subscribe | bool | Whether to support ai notification subscription | |
ishide_notification_intervalnew_8.2.4 | bool | Whether to hide the push interval switch | |
support_playback_new_rec_detail | bool | Support NewRecordDetailRsp (New_GetRecFileList) search | |
support_playback_new_rec_file_download | bool | Support NewRecordDetailRsp (New_GetRecFileList) video download, lock query and lock settings for video files | |
support_io_record | bool | Whether to support the total number of IO alarms on the front and rear end to determine whether the program with IO alarms | |
support_ANR | bool | ||
enable_encryption | bool | Private protocol encryption | |
media_port | int | Media port | |
media_external_port | int | Media external interface | |
upgrade_file_max_size | 0-512 | int | Maximum size of the upgrade file on the board, in MB |
upgrade_head_trans_size | 0-3 | int | The value is the length of the update header information on the board. The unit is k |
support_eventchk_snap | bool | Whether to support event capture | |
local_ip | string | ||
stream_linkage | "normal""none""custom2" | string | Code parameter Indicates the rate linkage rule. If none is passed, bitrate_default is not required. custom2-- URMET Customer |
FR_model_version | 0- 2147483647 | int | |
FD_model_version | 0- 2147483647 | int | |
support_param_import_export | bool | Whether parameter import is supported | |
support_sound_detection | bool | Whether sound detection is supported | |
support_ROI | bool | ||
support_record_type_ex | bool | Replay the video and add | |
support_disarming_onlyset | bool | Whether the disarming function is supported, but it can only be set to IPC by a third party and cannot be gotten | |
support_recorder_smd | bool | ||
support_logcollection | bool | ||
certificate_remain_time | 0-16 | int | Certificate retention time |
is_need_ftpurl | bool | Determine whether the NVR requires a url with a plaintext password | |
support_camera_day_night_param | bool | The NVR supports two sets of IPC day and night parameters | |
support_box485 | bool | 485 The nvr does not support the analog mode | |
support_shortlive_acctoken | bool | Whether short tokens are supported |
Table 3
Parameter | Range | Type | Description |
---|---|---|---|
ptz_version | "1.0" "2.0" "3.0" | string | Ptz version |
iris_minus_add | bool | ||
quick_use | "Ptz_QuickUse_3DPosition" "Ptz_QuickUse_AutoFocus" "Ptz_QuickUse_PtzReset" "Ptz_QuickUse_LensReset" "Ptz_QuickUse_WatchMode" "Ptz_QuickUse_ManualHumanTrace" | string array |
Table 4
Parameter | Range | Type | Description |
---|---|---|---|
Mainstream | bool | ||
Substream | bool | ||
Mobilestream | bool |
Table 5
Parameter | Range | Type | Description |
---|---|---|---|
"items" | "Mainstream" "Substream" "Mobilestream" | string |
Request message
Sample:
POST /API/AlarmConfig/Combination/Get HTTP/1.1
{
"version": "1.0",
"data": {}
}
Response message
Sample:
HTTP/1.1 200 OK
Content-Type: application/json
"data": {
"device_main_menu": [
"localSetting",
"remoteSetting",
"playback",
"preview"
],
"encode_type_ability": [
"H.264",
"H.265",
"H.264+",
"H.265+"
],
"concentrate_linkage_schedule_ability": ["FloodLight"],
"ptz_ability": {"btn_autofocus": true},
"support_subscribe_api": [
"AlarmConfig/Deterrence/Range",
"AlarmConfig/Deterrence/Get",
"StreamConfig/MainStream/Range",
"StreamConfig/MainStream/Get",
"StreamConfig/SubStream/Range",
"StreamConfig/SubStream/Get",
"StreamConfig/MobileStream/Range",
"StreamConfig/MobileStream/Get",
"DeviceConfig/Audio/Range",
"DeviceConfig/Audio/Get"
],
"support_ai_pidlcd": true,
"support_face_config": true,
"support_repeat_visitor": true,
"support_face_attendance": true,
"support_human_vehicle_search": true,
"support_PidLcd_search": true,
"support_heat_map": true,
"support_license_plate": true,
"support_lpd_enhance": true,
"support_Intrusion_search": true,
"support_RegionEntrance_search": true,
"support_RegionExiting_search": true,
"device_preview_AI_item": [
"FR",
"Human",
"Vehicle",
"Non-Vehicle",
"PID_Human",
"PID_Vehicle",
"PID_Non-Vehicle",
"LCD_Human",
"LCD_Vehicle",
"LCD_Non-Vehicle",
"LPR",
"Intrusion_Human",
"Intrusion_Vehicle",
"Intrusion_Non-Vehicle",
"RegionEntrance_Human",
"RegionEntrance_Vehicle",
"RegionEntrance_Non-Vehicle",
"RegionExiting_Human",
"RegionExiting_Vehicle",
"RegionExiting_Non-Vehicle"
],
"support_occlusion_detection": true,
"device_preview_ability": [
"face",
"manual_alarm"
],
"dev_play_backcap": 2,
"dev_type": 5932089557994242000,
"device_type": "30KQ+200AI 60FPS ä½ä¼",
"sound": true,
"live_sound_disable": {
"Mainstream": false,
"Substream": false,
"Mobilestream": false
},
"check_ftp_upgrade": false,
"support_screen_shots": true,
"channel_num": 1,
"stream_profile": {
"type": "string",
"items": [
"Mainstream",
"Substream",
"Mobilestream"
]
},
"default_stream": "Mainstream",
"support_ftp_upgrade": true,
"support_http_upgrade": true,
"support_get_upgradeUrlpw": true,
"backup_video_encryption_pwd": {
"type": "string",
"min_len": 6,
"max_len": 32
},
"support_backup_video_encryption": true,
"push_type": "RSPush",
"pushinfo_type": {
"type": "string",
"items": []
},
"local_alarmin_num": 1,
"local_alarmout_num": 1,
"support_ie_down_snap": true,
"preview_num": 0,
"mac_addr": "A4-FC-CE-00-14-BE",
"p2p_id": "DBC4S1NLRUXNHKWL111A",
"manufacturer": "",
"support_smart": true,
"support_smart_record": true,
"support_substream_playback": false,
"support_pir_record": false,
"support_flood_light": true,
"support_record_tag": true,
"support_aac": false,
"support_hls_server": false,
"support_voice_prompts": true,
"support_speaker": true,
"talkback": "TalkFull",
"support_audio_volume": true,
"support_sound_record": false,
"support_manual_record": false,
"support_video_cover_record": false,
"support_more_chn_playback": false,
"support_ai_notification_subscribe": true,
"ishide_notification_intervalnew_8.2.4": false,
"support_playback_new_rec_detail": true,
"support_playback_new_rec_file_download": true,
"support_io_record": true,
"support_ANR": true,
"enable_encryption": true,
"media_port": 443,
"media_external_port": 443,
"upgrade_file_max_size": 128,
"upgrade_head_trans_size": 3,
"support_eventchk_snap": true,
"local_ip": "192.168.1.11",
"stream_linkage": "normal",
"FR_model_version": 8388612,
"FD_model_version": 8456194,
"support_param_import_export": true,
"support_sound_detection": true,
"support_ROI": true,
"support_record_type_ex": true,
"support_disarming_onlyset": true,
"support_recorder_smd": false,
"support_logcollection": true
}
2. Login/SubscribeApi/Set
This interface is used to subscribe to the API
Request message
Table 2
Parameter | Range | Type | Description |
---|---|---|---|
subscribe_api | string array | Request an API to subscribe to or subscribe to all supported apis, such as:"StreamConfig/MainStream/Range" "StreamConfig/MainStream/Get" "StreamConfig/SubStream/Get" "All" |
Sample:
POST /API/Login/SubscribeApi/Set HTTP/1.1
{
"version": "1.0",
"data" : {
" subscribe_api ":[
"StreamConfig/MainStream/Range",
"StreamConfig/MainStream/Get",
"StreamConfig/SubStream/Get",
"DeviceConfig/Audio/Get",
]
}
}
Response message
Sample:
HTTP/1.1 200 OK
Content-Type: application/json
{
"result": "success",
"data": {}
}
3. /API/Event/Check
For details seeEvent > Event_check.